#pragma once
#include <string>
#include <vector>
#include "IDocument.h"
#include "ILayoutAwareObject.h"
#include "IConstants.h"

#ifdef WEBAGGREGATORDLL_EXPORT
# define WEBAGGREGATORDLL_API __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define WEBAGGREGATORDLL_API __declspec (dllimport)
#endif /* Not BUILDING_DLL */

namespace WebAggregator
{
	namespace dataGrabber
	{
		class ISupportDataGrabApi
		{
		public:
			WEBAGGREGATORDLL_API void initialize( IDocument* targetDocument );
			WEBAGGREGATORDLL_API void unInitialize();
			WEBAGGREGATORDLL_API ILayoutAwareObject* findFirst(std::string labelRegExpression, standardElementType elementType);
			WEBAGGREGATORDLL_API ILayoutAwareObject* findFirst(std::string labelRegExpression, std::string typeRegExpression);
			WEBAGGREGATORDLL_API ILayoutAwareObject* findLast(std::string labelRegExpression, standardElementType elementType);
			WEBAGGREGATORDLL_API ILayoutAwareObject* findLast(std::string labelRegExpression, std::string typeRegExpression);
			WEBAGGREGATORDLL_API ILayoutObjectCollection* findCollection(std::string labelRegExpression, standardElementType elementType);
			WEBAGGREGATORDLL_API ILayoutObjectCollection* findCollection(std::string labelRegExpression, std::string typeRegExpression);
		
		};
	}
}